#!/usr/bin/env node

// 服务器启动脚本
// 自动检测环境并设置相应的配置

const { spawn } = require('child_process');
const path = require('path');

// 检查是否有 .env 文件
const fs = require('fs');
const envPath = path.join(__dirname, '.env');

if (fs.existsSync(envPath)) {
    // 如果有 .env 文件，加载环境变量
    require('dotenv').config();
    console.log('✅ 已加载 .env 配置文件');
} else {
    console.log('ℹ️  未找到 .env 文件，使用默认配置');
    console.log('💡 你可以复制 .env.example 为 .env 来自定义配置');
}

// 设置默认环境变量
process.env.PORT = process.env.PORT || '3003';
process.env.HOST = process.env.HOST || '0.0.0.0';
process.env.NODE_ENV = process.env.NODE_ENV || 'production';

console.log('🚀 启动游戏平台服务器...');
console.log(`📡 监听地址: ${process.env.HOST}:${process.env.PORT}`);
console.log(`🌍 环境模式: ${process.env.NODE_ENV}`);

// 启动服务器
const server = spawn('node', ['server.js'], {
    stdio: 'inherit',
    env: process.env
});

server.on('error', (err) => {
    console.error('❌ 服务器启动失败:', err);
    process.exit(1);
});

server.on('close', (code) => {
    console.log(`🛑 服务器已停止 (退出码: ${code})`);
    process.exit(code);
});

// 优雅关闭
process.on('SIGINT', () => {
    console.log('\n🛑 正在关闭服务器...');
    server.kill('SIGINT');
});

process.on('SIGTERM', () => {
    console.log('\n🛑 正在关闭服务器...');
    server.kill('SIGTERM');
});